﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using TVPeruRFIDMovil.Formularios;
using TVPeruRFIDMovil.ServicioWS;
using TVPeruRFIDMovil.Clases.Negocio;
using LH.Library;
using TVPeruRFIDMovil.Clases.Movil;
using TVPeruRFIDMovil.Herramientas;

namespace TVPeruRFIDMovil
{
    public partial class frmIncidenciaMovimientoIngreso : frmBase
    {
        #region --- Variables y Constantes ---
        public DetalleBienSolicitud detalleBienSolicitud { get; set; }

        public Incidencia incidencia { get; set; }

        private const string CAMPO_IDINCIDENCIATIPO = "codIncidenciaTipo";
        private const string CAMPO_NOMBRE = "descripcion";

        #endregion

        #region --- Constructor ---
        public frmIncidenciaMovimientoIngreso()
        {
            InitializeComponent();
        }
        #endregion

        #region --- Eventos formulario ---

        private void frmIncidenciaMovimientoIngreso_Load(object sender, EventArgs e)
        {
            cargarFormulario();
        }

        private void mnuAceptar_Click(object sender, EventArgs e)
        {
            llenarIncidencia();
        }

        private void mnuRegresar_Click(object sender, EventArgs e)
        {
            salir(DialogResult.Cancel);
        }
        #endregion

        #region --- Metodos Propios ---
        private void cargarFormulario()
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                MetodosAplicacion.configuraFormulario(this);

                this.txtCodigoBarra.Text = this.detalleBienSolicitud.etiqueta.bien.codBarra;
                this.txtDescripcion.Text = this.detalleBienSolicitud.etiqueta.bien.descripcion;

                cargarIncidenciaTipo();
            }
            catch (Exception ex)
            {
                mostrarMensajeError(ex, this.lblTitulo.Text);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }

        private void cargarIncidenciaTipo()
        {
            IncidenciaTipo[] listaIncidenciaTipo = null;

            // Obtener listado de analistas del servicio web
            using (Interfase interfase = new Interfase())
            {
                listaIncidenciaTipo = interfase.listarIncidenciaTipo();
            }

            // Estableciendo fuente de datos de combo usuario
            this.cbIncidenciaTipo.DataSource = listaIncidenciaTipo;
            this.cbIncidenciaTipo.ValueMember = CAMPO_IDINCIDENCIATIPO;
            this.cbIncidenciaTipo.DisplayMember = CAMPO_NOMBRE;
        }

        private bool validarEntrada()
        {
            this.txtObservacion.Text = this.txtObservacion.Text.Trim();
            this.txtAccion.Text = this.txtAccion.Text.Trim();

            if (this.txtObservacion.Text.Equals(string.Empty))
            {
                Util.CampoNecesario(this.txtObservacion, "Debe ingresar sus observaciones");
                return true;
            }

            if (this.txtAccion.Text.Equals(string.Empty))
            {
                Util.CampoNecesario(this.txtAccion, "Debe ingresas la accion a tomar");
                return true;
            }

            return false;
        }

        private void llenarIncidencia()
        {
            // Valida los campos ingresado, sino son validos entonces salir
            if (validarEntrada()) { return; }

            try
            {

                if (!Util.ShowMessageboxPregunta("¿Esta seguro de registrar incidencia")) { return; }

                this.incidencia = new Incidencia();
                this.incidencia.bien = new Bien();
                this.incidencia.bien.idBien = this.detalleBienSolicitud.etiqueta.bien.idBien;
                this.incidencia.codIncidenciaTipo = Convert.ToInt32(this.cbIncidenciaTipo.SelectedValue);
                this.incidencia.accion = this.txtAccion.Text;
                this.incidencia.observacion = this.txtObservacion.Text;
                this.incidencia.usuario = new Usuario();
                this.incidencia.usuario.idUsuario = ParametrosAplicacion.USUARIO_ACTUAL.idUsuario;

                // Cerrar formulario como todo aceptado
                salir(DialogResult.OK);


            }
            catch (Exception ex)
            {
                mostrarMensajeError(ex, this.lblTitulo.Text);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }

        private void salir(DialogResult resultado)
        {
            this.DialogResult = resultado;
        }
        #endregion

    }
}